package _6同步问题;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class SellerRunnable3 implements Runnable 
{
	
	int count = 100;
	
	// 创建锁对象
	Lock l = new ReentrantLock();
	
	// lock()
	// unlock()
	// tryLock()
	
	@Override
	public void run() {
		while(count>0)
		{
			// 解决同步问题方式1 

			// 用法1 和 和前面差不多
//			// 锁住
//			l.lock();
//			
//			if(count>0)
//			{
//				count--;
//				System.out.println(Thread.currentThread().getName()+"售出一张票，剩下"+count+"票");
//			}
//			
//			// 解锁
//			l.unlock();
			
			// 尝试加锁
			if(l.tryLock())
			{
				if(count>0)
				{
					count--;
					System.out.println(Thread.currentThread().getName()+"售出一张票，剩下"+count+"票");
				}
				// 解锁
				l.unlock();
			}
			else
			{
				// 
				System.out.println(Thread.currentThread().getName()+"别人在卖票,我休息一下");
			}
			
			
			
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		System.out.println(Thread.currentThread().getName()+"售票结束");
		
	}

}
